package com.zzyl.common.ai;


import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.model.chat.ChatResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * AI模型调用器类
 * 用于调用百度千帆大模型API进行AI对话
 */
@Component
@Slf4j
public class AIModelInvoker {

    @Autowired
    private BaiduAIProperties baiduAIProperties;

    /**
     * 调用千帆大模型进行对话
     *
     * @param prompt 用户输入的提示词
     * @return 模型返回的对话结果
     */
    public String qianfanInvoker(String prompt) {
        System.out.println(prompt);
        // 初始化千帆模型客户端
        Qianfan qianfan = new Qianfan(baiduAIProperties.getAccessKey(), baiduAIProperties.getSecretKey());
        //Qianfan qianfan = new Qianfan(baiduAIProperties.getAccessKey(), baiduAIProperties.getSecretKey());
        // 执行模型对话请求
        // 调用千帆大模型API进行对话补全
        // 设置模型参数：指定模型名称、用户提示词、温度系数、最大输出token数、响应格式等
        ChatResponse response = qianfan.chatCompletion()
                .model(baiduAIProperties.getQianfanModel())  // 设置使用的千帆大模型名称
                .addMessage("user", prompt)                   // 添加用户角色的提示词消息
                .temperature(0.7)                            // 设置温度系数为0.7，控制输出随机性
                .maxOutputTokens(2000)                       // 设置最大输出token数为2000
                .responseFormat("json_object")               // 设置响应格式为JSON对象
                .execute();                                  // 执行API调用并获取响应结果

        String result = response.getResult();

        return result;
    }

}
